﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PSE.Framework.Configuration.Components
{
    /// <summary>
    /// Constantes com as origens dos logs de erros
    /// </summary>
    public class SystemComponents : PSE.Framework.Configuration.SystemComponents
    {
        /// <summary>
        /// Sistema
        /// </summary>
        public static new readonly SystemComponent System = GetSystem("PSEComponents");

        /// <summary>
        /// Serviço do ProcessManager
        /// </summary>
        public static readonly SystemComponent ProcessManagerService = new SystemComponent("ProcessManagerService", "Process Manager Service", SystemComponentType.Component);

        /// <summary>
        /// Instância do ProcessManager
        /// </summary>
        public static readonly SystemComponent ProcessManagerInstance = new SystemComponent("ProcessManagerInstance", "Process Manager Instance", SystemComponentType.Component);

        /// <summary>
        /// ConfigurationManager do ProcessManager
        /// </summary>
        public static readonly SystemComponent ProcessManagerConfigurationManager = new SystemComponent("ProcessManagerConfigurationManager", "Process Manager Configuration Manager", SystemComponentType.Component);

        /// <summary>
        /// ServiceManager do ProcessManager
        /// </summary>
        public static readonly SystemComponent ProcessManagerServiceManager = new SystemComponent("ProcessManagerServiceManager", "Process Manager Service Manager", SystemComponentType.Component);
         
        /// <summary>
        /// Hoster
        /// </summary>
        public static readonly SystemComponent HosterService = new SystemComponent("HosterService", "Hoster Service", SystemComponentType.Component);

        /// <summary>
        /// UI do Hoster
        /// </summary>
        public static readonly SystemComponent HosterManager = new SystemComponent("HosterManager", "Hoster Manager", SystemComponentType.Component);

        /// <summary>
        /// FIX
        /// </summary>
        public static readonly SystemComponent FixService = new SystemComponent("FixService", "FIX Service", SystemComponentType.Component);

        /// <summary>
        /// SPB
        /// </summary>
        public static readonly SystemComponent SpbCommunication = new SystemComponent("SpbCommunication", "SPB Communication", SystemComponentType.Component);

        /// <summary>
        /// Empacotador de log
        /// </summary>
        public static readonly SystemComponent LogPackager = new SystemComponent("LogPackager", "Log Packager", SystemComponentType.Component);

        /// <summary>
        /// Distribuidor Automático de Versões (Updater) - Client
        /// </summary>
        public static readonly SystemComponent UpdaterClient = new SystemComponent("UpdaterClient", "Updater Client", SystemComponentType.Component);

        /// <summary>
        /// Distribuidor Automático de Versões (Updater) - Monitor
        /// </summary>
        public static readonly SystemComponent UpdaterMonitor = new SystemComponent("UpdaterMonitor", "Updater Monitor", SystemComponentType.Component);

        /// <summary>
        /// Distribuidor Automático de Versões (Updater) - Server
        /// </summary>
        public static readonly SystemComponent UpdaterServer = new SystemComponent("UpdaterServer", "Updater Server", SystemComponentType.Component);

        /// <summary>
        /// Log de Auditoria Client
        /// </summary>
        public static readonly SystemComponent AuditLoggingClient = new SystemComponent("AuditLoggingClient", "Audit Logging Client", SystemComponentType.Component);
        
        /// <summary>
        /// Log de Auditoria Storage Service
        /// </summary>
        public static readonly SystemComponent AuditLoggingStorageService = new SystemComponent("AuditLoggingStorageService", "Audit Logging Storage Service", SystemComponentType.Component);
        
        /// <summary>
        /// Log de Auditoria Contingency Service
        /// </summary>
        public static readonly SystemComponent AuditLoggingContingencyService = new SystemComponent("AuditLoggingContingencyService", "Audit Logging Contingency Service", SystemComponentType.Component);        
    }
}
